﻿using GeneralServices.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Models.Utilisateur
{
    public class DTOUtilisateur : IDTO
    {
        #region IDTO Attributes
        private string code_utilisateur;
        private string top_admin;
        private string responsable;
        private Nullable<System.DateTime> date_heure_creation;
        private Nullable<System.DateTime> date_heure_modif;
        private string resp_mise_a_jour;
        #endregion

        #region IDTO Properties

        public string CODE_UTILISATEUR
        {
            get { return code_utilisateur; }
            set
            {
                code_utilisateur = value;
                OnPropertyChanged("CODE_UTILISATEUR");
            }
        }
        public string TOP_ADMIN
        {
            get { return top_admin; }
            set
            {
                top_admin = value;
                OnPropertyChanged("TOP_ADMIN");
            }
        }
        public string RESPONSABLE
        {
            get { return responsable; }
            set
            {
                responsable = value;
                OnPropertyChanged("RESPONSABLE");
            }
        }
        public Nullable<System.DateTime> DATE_HEURE_CREATION
        {
            get { return date_heure_creation; }
            set
            {
                date_heure_creation = value;
                OnPropertyChanged("DATE_HEURE_CREATION");
            }
        }
        public Nullable<System.DateTime> DATE_HEURE_MODIF
        {
            get { return date_heure_modif; }
            set
            {
                date_heure_modif = value;
                OnPropertyChanged("DATE_HEURE_MODIF");
            }
        }
        public string RESP_MISE_A_JOUR
        {
            get { return resp_mise_a_jour; }
            set
            {
                resp_mise_a_jour = value;
                OnPropertyChanged("RESP_MISE_A_JOUR");
            }
        }

        #endregion

        #region IDTO Membres

        public T GetObject<T>(object param) where T : class
        {
            throw new NotImplementedException();
        }

        public void SetObject<T>(T t, object param) where T : class
        {
            throw new NotImplementedException();
        }

        #endregion

        #region INotifyPropertyChanged Membres

        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

        protected void OnPropertyChanged(String name)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(name));
        }


        #endregion

        #region ISerializableCSV Membres

        public List<object> exposeAttributes()
        {
            List<object> list = new List<object>();
            list.Add(CODE_UTILISATEUR);
            list.Add(TOP_ADMIN);
            list.Add(RESPONSABLE);
            list.Add(DATE_HEURE_CREATION);
            list.Add(DATE_HEURE_MODIF);
            list.Add(RESP_MISE_A_JOUR);

            return list;
        }

        public string exposeHeader(string separateur)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("CODE_UTILISATEUR").Append(separateur).
                Append("TOP_ADMIN").Append(separateur).
                Append("RESPONSABLE").Append(separateur).
                Append("DATE_HEURE_CREATION").Append(separateur).
                Append("DATE_HEURE_MODIF").Append(separateur).
                Append("RESP_MISE_A_JOUR");
            return sb.ToString();
        }

        public bool importAttributes(string[] data)
        {
            return false;
        }

        #endregion
    }
}
